package com.chixing.service;

import com.chixing.entity.UserCoupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.chixing.util.Result;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author liwenjing
 * @since 2025-10-07
 */
public interface IUserCouponService extends IService<UserCoupon> {
    //用户领取优惠券
    public Result receiveCoupon(UserCoupon userCoupon);

    //查看我领取的所有的优惠券 `【Mycoupon】`按照发布时间的降序显示，并显示状态
    // 1. 下订单业务中，下拉列表显示 所有的有效的优惠券
    //2.  用户自己查看优惠券，[未使用 | 已使用 | 已过期]
    //状态（1有效/0无效/2退回可用）

    public Result getMyAllCoupons(Integer userId,Integer usercouponStatus);

    public Result getById(Integer mycouponId);

    // 优惠券状态改变
    public Result updateStatus(Integer mycouponId,Integer mycouponStatus);

    /**
     * 查询用户所有优惠券
     * @param userId 用户ID
     * @return 用户优惠券列表
     */
    List<UserCoupon> getUserCouponsByUserId(Integer userId);

    /**
     * 根据ID查询用户优惠券
     *
     * @param userCouponId 用户优惠券ID
     * @return 用户优惠券信息
     */
    UserCoupon getUserCouponById(Integer userCouponId);

    /**
     * 添加用户优惠券
     * @param userCoupon 用户优惠券对象
     * @return 是否添加成功
     */
    boolean addUserCoupon(UserCoupon userCoupon);

    /**
     * 更新用户优惠券
     * @param userCoupon 用户优惠券对象
     * @return 是否更新成功
     */
    boolean updateUserCoupon(UserCoupon userCoupon);

    /**
     * 删除用户优惠券
     * @param userCouponId 用户优惠券ID
     * @return 是否删除成功
     */
    boolean deleteUserCoupon(Integer userCouponId);
}
